package com.start.platform.core;

import com.alibaba.fastjson2.JSONObject;
import com.start.platform.core.entity.StartPlatformConfigEntity;
import com.start.platform.core.vo.StartPlatformFansDetail;

public interface StartBasePlatformService<T> {
    /**
     * 平台类型
     *
     * @return
     */
    String getPlatformType();

    /**
     * 平台类型名称
     *
     * @return
     */
    String getPlatformTypeLabel();

    /**
     * 添加配置
     */
    void add(StartPlatformConfigEntity config);

    /**
     * 移除配置
     */
    void remove(String appId);

    /**
     * 修改配置
     */
    void updateByAppId(String appId, StartPlatformConfigEntity config);

    /**
     * 是否存在AppId
     *
     * @param appId
     * @return
     */
    boolean hasAppId(String appId);

    /**
     * 获取平台服务
     *
     * @param appId
     * @return
     */
    T getPlatformService(String appId);




    /**
     * 根据第三方平台code 获取用户信息
     *
     * @param appId
     * @param code
     * @param prop
     * @return
     */
    StartPlatformFansDetail getUserInfoByPlatformCode(String appId, String code, JSONObject prop);

    /**
     * 平台验证token
     *
     * @param appId
     * @return
     */
    Object platformVerifyToken(String appId);

}
